package com.day20_reflect;

/**
 * @ClassName: reflect_test04
 * @Author: zw
 * @Description: 出百万拳，行万里路；
 * @Create 2024/3/31-12:50
 * @Version 1.0
 */

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;

/***
 *   //有个ArrayList<Integer> 集合，
 *   现在我想在这个集合中添加一个字符串数据，如何实现
 */
public class reflect_test04 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(10);
        arrayList.add(20);
//        arrayList.add("hello") // 正常方法添加就会报错
        // 通过对象.getClass, 获取到Class类的对象
        Class<? extends ArrayList> aClass = arrayList.getClass();
        // 通过getMethod方法获取到add方法，
        Method add = aClass.getMethod("add", Object.class);
        add.invoke(arrayList, "hello"); //用add.invoke 通过反射调用add方法
        add.invoke(arrayList, "java");
        System.out.println(arrayList);
    }
}
